package com.service.Authorization.service;

import com.service.Authorization.dto.AddProgrammeInfoExamineDto;
import com.service.Authorization.dto.ApplicationProgrammeInfoDto;
import com.service.Authorization.dto.SubmitProgrammeInfoExamineDto;
import com.service.Authorization.dto.VerifyProgrammeInfoDto;
import com.service.Authorization.entity.ProgrammeInfoExamine;
import com.service.config.utils.Result;

import java.util.List;

/**
 * 方案信息表(ProgrammeInfoExamine)表服务接口
 *
 * @author makejava
 * @since 2021-08-10 16:14:30
 */
public interface ProgrammeInfoExamineService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    ProgrammeInfoExamine queryById(String id);

    /**
     * 查询多条数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     * @return 对象列表
     */
    List<ProgrammeInfoExamine> queryAllByLimit(int offset, int limit);

    /**
     * 新增数据
     *
     * @param programmeInfoExamine 实例对象
     * @return 实例对象
     */
    ProgrammeInfoExamine insert(ProgrammeInfoExamine programmeInfoExamine);

    /**
     * 修改数据
     *
     * @param programmeInfoExamine 实例对象
     * @return 实例对象
     */
    ProgrammeInfoExamine update(ProgrammeInfoExamine programmeInfoExamine);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(String id);

    Result updateProgrammeInfoConfig(String userId, SubmitProgrammeInfoExamineDto submitProgrammeInfoExamineDto) throws Exception;

    Result cancelProgrammeInfoConfig(String programmeId);

    Result putIssue(ApplicationProgrammeInfoDto applicationProgrammeInfoDto);

    Result queryManageProgrammeInfo(String userId,String programmeInfoId,Integer type);

    Result addManageProgrammeInfo(String userId, AddProgrammeInfoExamineDto addProgrammeInfoExamineDto) throws Exception;

    Result queryRecordInfoS(ProgrammeInfoExamine programmeInfoExamine,String flag);

    void verifyShopInfo(String value,  String flag, VerifyProgrammeInfoDto verifyProgrammeInfoDto) throws Exception;

    void addDefaultProgrammeInfo(String userId,Integer type);

    List<ProgrammeInfoExamine> queryAll(ProgrammeInfoExamine programmeInfoExamine);

    Result getUrl(String userId,String programmeInfoId);
}
